/**
 * Copyright &copy; 2018-2018 <a href="#">聚成科技</a> All rights reserved.
 */
package com.jckj.core.service;

import com.github.pagehelper.PageInfo;
import com.jckj.core.entity.*;
import com.jckj.core.vos.AgriProductQueryVo;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *     农产品维护
 * </p>
 *
 * @author 刘志远
 * @date 18-1-29
 */
@Service
public interface AgriProductService {

    /**
     * 查询产品
     *
     * @param vo
     * @return
     */
    PageInfo<AgriProduct> queryArgiProduct(AgriProductQueryVo vo);

    /**
     * 增加生产环节
     *
     * @param producttionLink
     */
    void addProLink(ProducttionLink producttionLink);

    /**
     * 修改生产环节
     *
     * @param producttionLink
     * @param uId
     */
    void updateProLink(ProducttionLink producttionLink, String uId);

    /**
     * 删除生产环节
     *
     * @param producttionLink
     */
    void deleteProLink(ProducttionLink producttionLink);

    /**
     * 查询所有生产环节
     *
     * @param vo
     * @return
     */
    List<ProducttionLink> queryAllProLink(AgriProductQueryVo vo);

    /**
     * 增加检测环节
     *
     * @param checkSegment
     */
    void addCheckSegment(CheckSegment checkSegment);

    /**
     * 修改检测环节
     *
     * @param checkSegment
     */
    void updateSegment(CheckSegment checkSegment);

    /**
     * 删除检测环节
     *
     * @param checkSegment
     */
    void deleteSegment(CheckSegment checkSegment);

    /**
     * 查询所有检测环节
     *
     * @param vo
     * @return
     */
    List<CheckSegment> queryAllSegment(AgriProductQueryVo vo);

    /**
     * 增加检测项
     *
     * @param checkSegmentItem
     */
    void addCheckSegmentItem(CheckSegmentItem checkSegmentItem);

    /**
     * 修改检测项
     *
     * @param checkSegmentItem
     */
    void updateCheckSegmentItem(CheckSegmentItem checkSegmentItem);

    /**
     * 删除检测项
     *
     * @param checkSegmentItem
     */
    void deleteCheckSegmentItem(CheckSegmentItem checkSegmentItem);

    /**
     * 查询所有检测项
     *
     * @param agriProductQueryVo
     * @return
     */
    List<CheckSegmentItem> queryAllCheckSegmentItem(AgriProductQueryVo agriProductQueryVo);

    /**
     * 　查询产品列表
     *
     * @param agriProductQueryVo
     * @return
     */
    PageInfo<AgriProView> findAgriProViewByPage(AgriProductQueryVo agriProductQueryVo);

    /**
     * 检测产品编号是否重复
     * @param proCode
     * @return
     */
    boolean checkProCode(String proCode);

    /**
     * 检测产品多嘴多舌是否重复
     * @param proName
     * @return
     */
    boolean checkProNmae(String proName);

    /**
     * 新增农产品
     * @param agriProduct
     */
    void saveAgriPro(AgriProduct agriProduct);

    /**
     * 查询当前产品是否存在引用
     * @param proId
     * @return
     */
    boolean hasRef(String proId);

    /**
     * 删除产品
     * @param proId
     */
    void delAgriPro(String proId);

    /**
     * 按ID查询农产品
     * @param proId
     * @return
     */
    AgriProduct findAgriProductById(String proId);
}
